import type { ExtensibleEntityDto, ExtensibleObject } from '@abp/ng.core';
import type { OperatorDto } from '../staff/models';

export interface SupplierCreateDto extends SupplierCreateOrUpdateBase {
}

export interface SupplierCreateOrUpdateBase extends ExtensibleObject {
  tenantId?: string;
  supplierTypeId?: string;
  name?: string;
  shortName?: string;
  contact?: string;
  phone?: string;
  address?: string;
  operatorId?: string;
  enabled: boolean;
  code?: string;
  sourceType?: string;
  sourceKey?: string;
  sourceCreatedOn?: string;
  isDeleted: boolean;
  deleterId?: string;
  deletionTime?: string;
  lastModificationTime?: string;
  lastModifierId?: string;
  creationTime?: string;
  creatorId?: string;
}

export interface SupplierDto extends ExtensibleEntityDto<string> {
  tenantId?: string;
  supplierTypeId?: string;
  supplierType: SupplierTypeDto;
  name?: string;
  shortName?: string;
  contact?: string;
  phone?: string;
  address?: string;
  operatorId?: string;
  operator: OperatorDto;
  enabled: boolean;
  code?: string;
  sourceType?: string;
  sourceKey?: string;
  sourceCreatedOn?: string;
  isDeleted: boolean;
  deleterId?: string;
  deletionTime?: string;
  lastModificationTime?: string;
  lastModifierId?: string;
  creationTime?: string;
  creatorId?: string;
  concurrencyStamp?: string;
}

export interface SupplierTypeCreateDto extends SupplierTypeCreateOrUpdateBase {
}

export interface SupplierTypeCreateOrUpdateBase extends ExtensibleObject {
  tenantId?: string;
  level: number;
  parentId?: string;
  displayName?: string;
  code?: string;
  sourceType?: string;
  sourceKey?: string;
  sourceCreatedOn?: string;
  isDeleted: boolean;
  deleterId?: string;
  deletionTime?: string;
  lastModificationTime?: string;
  lastModifierId?: string;
  creationTime?: string;
  creatorId?: string;
}

export interface SupplierTypeDto extends ExtensibleEntityDto<string> {
  tenantId?: string;
  level: number;
  parentId?: string;
  displayName?: string;
  code?: string;
  sourceType?: string;
  sourceKey?: string;
  sourceCreatedOn?: string;
  isDeleted: boolean;
  deleterId?: string;
  deletionTime?: string;
  lastModificationTime?: string;
  lastModifierId?: string;
  creationTime?: string;
  creatorId?: string;
  concurrencyStamp?: string;
}

export interface SupplierTypeUpdateDto extends SupplierTypeCreateOrUpdateBase {
  concurrencyStamp?: string;
}

export interface SupplierUpdateDto extends SupplierCreateOrUpdateBase {
  concurrencyStamp?: string;
}
